// 
const path = require("path")
const HTMLWebpackPlugin = require('html-webpack-plugin')
const {CleanWebpackPlugin} = require('clean-webpack-plugin')
module.exports = {
    // 入口文件
    entry: "./src/index.ts",
    // 指定打包文件所在目录
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: "bundle.js", // 打包后的文件
        environment: {
            // 让 webpack 不使用箭头函数
            arrowFunction: false
        }
    },
    // 
    module: {
        // 指定加载规则
        rules: [
            { 
                test: /\.ts$/,  // \. 是转义
                // 从后向前执行 所以先转换TS
                use: [{
                    loader: "babel-loader",
                    options: {
                        // 预定义的环境
                        presets: [
                            ["@babel/preset-env",
                            // 兼容目标浏览器
                             {targets: 
                                {"ie": "11"},
                                "corejs": "3",
                                //  按需加载
                                "useBuiltIns": "usage"
                            },
                            
                            ]
                        ]
                    }
                },'ts-loader'],
                // 排除的文件
                exclude: /node-modules/
            }
        ]
    },
    // 设置mode
	mode: 'development',
    // 配置webpack插件
    plugins: [
        new HTMLWebpackPlugin({
            title: "testWebpack",
            template: "./src/index.html"
        }),
        new CleanWebpackPlugin(),
    ],
    // 设置引用模块
    resolve: {
        extensions: ['.ts', '.js']
    }
}